package com.ccc.dingtalk.pojo.dingtalk;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 钉钉实体对象——考勤结果
 *
 * @author superC
 * @version 1.0.0
 * @date 2023-08-08
 */

@Data
public class AttendanceRecordresult implements Serializable {

    private static final long serialVersionUID = 1074621492836576573L;

    /**
     * 唯一标识ID
     */
    private Long id;

    /**
     * 数据来源：
     * <p>
     * ATM：考勤机打卡（指纹/人脸打卡）
     * BEACON：IBeacon
     * DING_ATM：钉钉考勤机（考勤机蓝牙打卡）
     * USER：用户打卡
     * BOSS：老板改签
     * APPROVE：审批系统
     * SYSTEM：考勤系统
     * AUTO_CHECK：自动打卡
     */
    private String sourceType;

    /**
     * 计算迟到和早退，基准时间。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date baseCheckTime;

    /**
     * 实际打卡时间, 用户打卡时间的毫秒数。
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date userCheckTime;

    /**
     * 关联的审批实例ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。
     */
    private String procInstId;

    /**
     * 关联的审批ID，当该字段非空时，表示打卡记录与请假、加班等审批有关。
     */
    private Long approveId;

    /**
     * 位置结果：
     * <p>
     * Normal：范围内
     * Outside：范围外
     * NotSigned：未打卡
     */
    private String locationResult;

    /**
     * 打卡结果：
     * <p>
     * Normal：正常
     * Early：早退
     * Late：迟到
     * SeriousLate：严重迟到
     * Absenteeism：旷工迟到
     * NotSigned：未打卡
     */
    private String timeResult;

    /**
     * 考勤类型：
     * <p>
     * OnDuty：上班
     * OffDuty：下班
     */
    private String checkType;

    /**
     * 打卡人的userId
     */
    private String userId;

    /**
     * 工作日
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date workDate;

    /**
     * 排班ID
     */
    private Long planId;

    /**
     * 排班ID
     */
    private Long groupId;

}
